const { Sequelize } = require('sequelize')
const config = require('./config')

// 从环境变量中获取数据库配置
// 确保数据库名称不为空
const dbName = config.database.database || 'buding_account_db'
console.log('使用的数据库名称:', dbName)

const sequelize = new Sequelize(
	dbName,
	config.database.username,
	config.database.password,

	{
		host: config.database.host,
		port: config.database.port,
		dialect: 'mysql',
		logging: false, // 开启SQL查询日志
		timezone: '+08:00', // 设置时区为北京时间
		define: {
			timestamps: false, // 默认不添加时间戳字段
			freezeTableName: true // 表名不会被转换为复数形式
		},
		pool: {
			max: 5, // 连接池最大连接数
			min: 0, // 连接池最小连接数
			acquire: 30000, // 获取连接的最大等待时间（毫秒）
			idle: 10000 // 连接在释放之前可以空闲的最长时间（毫秒）
		}
	}
)

// 测试数据库连接
const testConnection = async () => {
	try {
		await sequelize.authenticate()
		console.log('数据库连接成功')
	} catch (error) {
		console.error('数据库连接失败:', error)
	}
}

testConnection()

module.exports = sequelize
